<!doctype html>
<html lang="zh" translate="no">

<head>
    <title>
        安装程序
    </title>
    <meta charset="utf-8">
    <script src="/static/admin/lib/jquery/jquery.min.js"></script>
    <link href="/static/admin/lib/layui/css/layui.css" rel="stylesheet">
    <script src="/static/admin/lib/layui/layui.js"></script>
    <script src="/static/admin/lib/toastr/toastr.min.js"></script>
    <link href="/static/admin/lib/toastr/toastr.min.css" rel="stylesheet">
    <script src="/static/admin/js/rovecoder.js"></script>

    <style>
        .installbox {
            line-height: 28px
        }

        .layui-panel {
            border-radius: 4px;
        }

        .layui-elem-quote {
            border-left: 5px solid #1e9fff;
        }

        .layui-table thead {
            background-color: #f5f6f8 !important;
        }

        .chksuccess {
            background-color: green;
            color: #fff
        }

        .chkfail {
            background-color: orange;
            color: #fff
        }

        h1 {
            margin-bottom: 40px;
        }
    </style>
</head>

<body style="background-color:#F8F5F0 ;">
    <div class="layui-container">

        <div style="margin-top: 60px;">

            <div class="layui-panel">
                <div style="padding: 32px;">




                    <div id="xieyi" class="installbox">

                        <h1 style="text-align: center;">阅读协议</h1>
                        <div style="max-height: 600px;overflow-y: auto;">
                            <p>软件使用协议​</p>
                            <p>本《FrameCoder集约化框架使用协议》（以下简称 “本协议”）是由【流浪码农】（以下简称 “我们”）与使用本软件的用户（以下简称 “您”）之间订立的具有法律效力的协议。在您使用本软件之前，请务必仔细阅读本协议的全部内容。如果您不同意本协议的任何条款，请不要使用本软件。一旦您下载、安装、访问或使用本软件，即表示您已充分阅读、理解并同意接受本协议的全部内容。​</p>
                            <p>一、定义​</p>
                            <ol class="list-number1 r-list r-list-number">
                                <li>
                                    <p><span><strong>本软件</strong></span>：指由我们开发并提供的，名称为【FrameCoder集约化框架】的计算机软件，包括该软件的所有更新版本、补丁、插件、附加程序及相关文档资料。​</p>
                                </li>
                            </ol>
                            <ol class="list-number1 r-list r-list-number" start="2">
                                <li>
                                    <p><span><strong>服务</strong></span>：指基于本软件向您提供的各项功能及相关服务，包括但不限于数据存储、信息交互、功能操作等。​</p>
                                </li>
                            </ol>
                            <p>二、软件授权​</p>
                            <ol class="list-number1 r-list r-list-number">
                                <li>
                                    <p>我们授予您一项个人的、不可转让及非排他性的使用许可，仅允许您在符合本协议规定的情况下，在您拥有或合法控制的设备上安装、使用本软件。​</p>
                                </li>
                            </ol>
                            <ol class="list-number1 r-list r-list-number" start="2">
                                <li>
                                    <p>您不得对本软件进行反向工程、反向编译、反汇编，或者以其他方式尝试获取本软件的源代码；不得对本软件进行修改、改编、翻译，制作衍生作品。</p>
                                </li>
                            </ol>
                            <ol class="list-number1 r-list r-list-number" start="3">
                                <li>
                                    <p>本软件的一切知识产权，包括但不限于著作权、商标权、专利权、商业秘密等，均归我们所有。本协议并未向您转让任何知识产权，您仅获得本软件的有限使用许可。​</p>
                                </li>
                            </ol>
                            <p>三、软件使用​</p>
                            <ol class="list-number1 r-list r-list-number">
                                <li>
                                    <p>您在使用本软件时，必须遵守适用的法律法规、行业规范及社会公德，不得利用本软件从事任何违法、违规或损害他人合法权益的活动，包括但不限于：​</p>
                                </li>
                            </ol>
                            <ul class="list-bullet2 r-list r-list-bullet">
                                <li>
                                    <p>传播淫秽、色情、暴力、恐怖、歧视性内容或其他违法信息；​</p>
                                </li>
                            </ul>
                            <ul class="list-bullet2 r-list r-list-bullet">
                                <li>
                                    <p>进行网络攻击、恶意软件传播、侵犯他人隐私、窃取他人数据等非法行为；​</p>
                                </li>
                            </ul>
                            <ul class="list-bullet2 r-list r-list-bullet">
                                <li>
                                    <p>干扰、破坏本软件的正常运行，或干扰其他用户正常使用本软件；​</p>
                                </li>
                            </ul>
                            <ul class="list-bullet2 r-list r-list-bullet">
                                <li>
                                    <p>从事任何可能损害我们声誉、利益或知识产权的行为。​</p>
                                </li>
                            </ul>
                            <ol class="list-number1 r-list r-list-number" start="2">
                                <li>
                                    <p>您需自行负责对您使用本软件的行为及由此产生的后果承担全部责任。若因您违反本协议规定使用本软件，导致我们或第三方遭受损失，您应承担赔偿责任。​</p>
                                </li>
                            </ol>
                            <ol class="list-number1 r-list r-list-number" start="3">
                                <li>
                                    <p>我们有权根据实际情况对本软件的功能、服务内容、使用规则等进行调整、变更或终止。我们将通过在软件内公告、邮件通知、短信通知等方式向您告知相关变更内容。若您继续使用本软件，即视为您接受这些变更；若您不同意变更后的内容，您有权停止使用本软件。​</p>
                                </li>
                            </ol>
                            <p>四、用户账户​</p>
                            <ol class="list-number1 r-list r-list-number">
                                <li>
                                    <p>您在使用本软件部分功能时，可能需要注册账户。您应确保注册信息的真实性、准确性和完整性，并及时更新注册信息。若因您提供虚假或不准确的注册信息，导致您无法正常使用本软件或造成其他损失，由您自行承担责任。​</p>
                                </li>
                            </ol>
                            <ol class="list-number1 r-list r-list-number" start="2">
                                <li>
                                    <p>您应对您的账户和密码负有妥善保管义务，不得将账户和密码泄露给任何第三方。因您保管不善导致账户被盗用、信息泄露或其他损失的，由您自行承担责任。如发现账户存在异常情况，您应立即通知我们，并配合我们采取相应的措施。​</p>
                                </li>
                            </ol>
                            <ol class="list-number1 r-list r-list-number" start="3">
                                <li>
                                    <p>我们有权根据相关法律法规、监管要求或本协议约定，对您的账户进行冻结、注销等操作。账户注销后，您将无法再使用该账户登录本软件，且账户内的相关数据（如个人信息、使用记录等）可能会被删除或进行匿名化处理。​</p>
                                </li>
                            </ol>
                            <p>五、数据处理​</p>
                            <ol class="list-number1 r-list r-list-number">
                                <li>
                                    <p>在您使用本软件的过程中，我们可能会收集、存储、使用、处理您的个人信息及其他相关数据（以下简称 “数据”）。我们将严格遵守相关法律法规的规定，采取必要的安全措施保护您的数据安全。具体的数据处理规则详见我们的《隐私政策》，您可在软件内查阅。​</p>
                                </li>
                            </ol>
                            <ol class="list-number1 r-list r-list-number" start="2">
                                <li>
                                    <p>您保证对您通过本软件上传、发布或传输的数据拥有合法的权利，不会侵犯任何第三方的合法权益。若因您的数据导致我们或第三方遭受任何争议、索赔、损失等，您应承担全部责任，并赔偿我们因此遭受的全部损失。​</p>
                                </li>
                            </ol>
                            <ol class="list-number1 r-list r-list-number" start="3">
                                <li>
                                    <p>我们有权根据实际情况对数据的存储期限、存储方式等进行调整。在符合法律法规规定的前提下，我们可能会对数据进行匿名化处理或与第三方共享数据，以提供更好的服务或进行数据分析等。若涉及敏感数据的共享，我们将事先征得您的同意。​</p>
                                </li>
                            </ol>
                            <p>六、责任限制​</p>
                            <ol class="list-number1 r-list r-list-number">
                                <li>
                                    <p>我们尽力确保本软件的正常运行，但不保证本软件始终能无故障、不间断地运行，也不保证本软件完全符合您的期望和需求。对于因网络故障、计算机病毒、黑客攻击、系统不稳定、不可抗力等原因导致您无法正常使用本软件或遭受损失的，我们不承担责任。​</p>
                                </li>
                            </ol>
                            <ol class="list-number1 r-list r-list-number" start="2">
                                <li>
                                    <p>在任何情况下，我们对因使用或无法使用本软件而导致的直接、间接、偶然、特殊、附带或惩罚性损失（包括但不限于利润损失、数据丢失、业务中断等）不承担责任，即使我们已被告知该等损失的可能性。但因我们故意或重大过失造成的损失除外。​</p>
                                </li>
                            </ol>
                            <p>七、协议变更​</p>
                            <p>我们有权根据实际情况对本协议进行变更。变更后的协议将在软件内公告或通过其他合适的方式通知您。若您在变更后的协议生效后继续使用本软件，即视为您接受变更后的协议；若您不同意变更后的协议，您应立即停止使用本软件。​</p>
                            <p>八、协议终止​</p>
                            <ol class="list-number1 r-list r-list-number">
                                <li>
                                    <p>若您违反本协议的任何条款，我们有权不经事先通知立即终止本协议，并停止向您提供本软件及相关服务。在协议终止后，您应立即停止使用本软件，并删除已安装的软件及相关文件。​</p>
                                </li>
                            </ol>
                            <ol class="list-number1 r-list r-list-number" start="2">
                                <li>
                                    <p>本协议终止后，我们有权保留您在使用本软件过程中产生的相关数据，并根据法律法规的规定进行处理。同时，您应承担因协议终止而产生的一切后果和责任，包括但不限于无法继续使用本软件、数据丢失等。​</p>
                                </li>
                            </ol>
                            <p>九、争议解决​</p>
                            <p>本协议的签订、履行、解释及争议解决均适用【具体法律适用地区】法律。若您与我们之间因本协议产生任何争议，应首先通过友好协商解决；协商不成的，任何一方均有权向【具体管辖法院】提起诉讼。​</p>
                            <p>十、其他条款​</p>
                            <ol class="list-number1 r-list r-list-number">
                                <li>
                                    <p>本协议构成您与我们之间就使用本软件的全部协议，并取代之前所有关于本软件使用的口头或书面协议。​</p>
                                </li>
                            </ol>
                            <ol class="list-number1 r-list r-list-number" start="2">
                                <li>
                                    <p>本协议各条款的标题仅为方便阅读而设，不影响条款的含义和解释。若本协议任何条款被认定为无效或不可执行，该条款应从本协议中删除，其余条款仍具有法律效力，并应尽可能按照原意图予以执行。​</p>
                                </li>
                            </ol>
                            <ol class="list-number1 r-list r-list-number" start="3">
                                <li>
                                    <p>我们未行使或执行本协议任何权利或条款，不构成对该权利或条款的放弃。​</p>
                                </li>
                            </ol>
                            <p></p>
                        </div>

                        <div style="margin: 20px 0;text-align:center">
                            <button type="button" class="layui-btn layui-bg-blue" id="agree">同意协议并安装</button>
                        </div>


                    </div>
                    <div id="systemchk" class="installbox" style="display: none;">
                        <h1 style="text-align: center;">环境检测</h1>
                        <table class="layui-table">

                            <colgroup>
                                <col>
                                <col>
                                <col style="width: 150px;">
                            </colgroup>

                            <thead>

                                <tr>

                                    <th>检查项</th>
                                    <th>当前配置</th>
                                    <th>检查结果</th>
                                </tr>

                            </thead>

                            <tbody>
                                <tr>
                                    <td>PHP版本</td>
                                    <td><?php echo PHP_VERSION ?></td>
                                    <?php $b = version_compare('8.2', PHP_VERSION, '<='); ?>
                                    <td class="<?php echo $b ? 'chksuccess' : 'chkfail' ?>"> <?php echo $b ? '√' : '×' ?> </td>
                                </tr>

                                <tr>
                                    <?php $b = class_exists('PDO'); ?>
                                    <td>PDO扩展</td>
                                    <td><?php echo $b ? '已安装' : '未安装'; ?></td>
                                    <td class="<?php echo $b ? 'chksuccess' : 'chkfail' ?>"> <?php echo $b ? '√' : '×' ?> </td>
                                </tr>

                                <tr>
                                    <?php $b = extension_loaded('pdo_mysql'); ?>
                                    <td>PDO MYSQL扩展</td>
                                    <td><?php echo $b ? '已加载' : '未加载'; ?></td>
                                    <td class="<?php echo $b ? 'chksuccess' : 'chkfail' ?>"> <?php echo $b ? '√' : '×' ?> </td>
                                </tr>

                                <tr>

                                    <?php $b = extension_loaded('json'); ?>
                                    <td>JSON扩展</td>
                                    <td><?php echo $b ? '已加载' : '未加载'; ?></td>
                                    <td class="<?php echo $b ? 'chksuccess' : 'chkfail' ?>"> <?php echo $b ? '√' : '×' ?> </td>
                                </tr>

                                <tr>
                                    <?php $b = extension_loaded('mbstring'); ?>
                                    <td>MBSTRING扩展</td>
                                    <td><?php echo $b ? '已加载' : '未加载'; ?></td>
                                    <td class="<?php echo $b ? 'chksuccess' : 'chkfail' ?>"> <?php echo $b ? '√' : '×' ?> </td>
                                </tr>
                                <tr>
                                    <?php $b = extension_loaded('fileinfo'); ?>
                                    <td>FILEINFO扩展</td>
                                    <td><?php echo $b ? '已加载' : '未加载'; ?></td>
                                    <td class="<?php echo $b ? 'chksuccess' : 'chkfail' ?>"> <?php echo $b ? '√' : '×' ?> </td>
                                </tr>

                                <tr>
                                    <?php $b = is_writable(runtime_path()); ?>
                                    <td>临时目录RUNTIME可写</td>
                                    <td><?php echo $b ? '可写' : '不可写'; ?></td>
                                    <td class="<?php echo $b ? 'chksuccess' : 'chkfail' ?>"> <?php echo $b ? '√' : '×' ?> </td>
                                </tr>

                       

                                <tr>
                                    <?php $b = is_writable(base_path() . '/.env'); ?>
                                    <td>根目录.ENV配置文件可写</td>
                                    <td><?php echo $b ? '可写' : '不可写'; ?></td>
                                    <td class="<?php echo $b ? 'chksuccess' : 'chkfail' ?>"> <?php echo $b ? '√' : '×' ?> </td>
                                </tr>


                            </tbody>

                        </table>

                        <div style="margin: 20px 0;text-align:center">
                            <button type="button" class="layui-btn layui-bg-blue" id="toconfig">下一步</button>
                        </div>
                    </div>
                    <div id="installform" class="installbox" style="display: none;">
                        <h1 style="text-align: center;">开始安装</h1>
                        <form class="layui-form" action="">
                            <blockquote class="layui-elem-quote">
                                数据库信息
                            </blockquote>
                            <div class="layui-form-item">
                                <label class="layui-form-label">服务器地址</label>
                                <div class="layui-input-block">
                                    <input type="text" name="dbhost" value="127.0.0.1" lay-verify="required" placeholder="请输入" autocomplete="off" class="layui-input">
                                </div>
                            </div>

                            <div class="layui-form-item">
                                <label class="layui-form-label">数据库端口</label>
                                <div class="layui-input-block">
                                    <input type="text" name="dbport" value="3306" lay-verify="required" placeholder="请输入" autocomplete="off" class="layui-input">
                                </div>
                            </div>
                            <div class="layui-form-item">
                                <label class="layui-form-label">数据库名</label>
                                <div class="layui-input-block">
                                    <input type="text" name="dbdatabase" lay-verify="required" placeholder="请输入" autocomplete="off" class="layui-input">
                                </div>
                            </div>

                            <div class="layui-form-item">
                                <label class="layui-form-label">用户名</label>
                                <div class="layui-input-block">
                                    <input type="text" name="dbusername" value="root" lay-verify="required" placeholder="请输入" autocomplete="off" class="layui-input">
                                </div>
                            </div>


                            <div class="layui-form-item">
                                <label class="layui-form-label">密码</label>
                                <div class="layui-input-block">
                                    <input type="password" name="dbpassword" value="" lay-verify="required" placeholder="请输入" autocomplete="off" class="layui-input">
                                </div>
                            </div>


                            <div class="layui-form-item">
                                <label class="layui-form-label">表前缀</label>
                                <div class="layui-input-block">
                                    <input type="text" name="dbprefix" value="fc_" lay-verify="required" placeholder="请输入" autocomplete="off" class="layui-input">
                                </div>
                            </div>


                            <blockquote class="layui-elem-quote">
                                管理员信息
                            </blockquote>
                            <div class="layui-form-item">
                                <label class="layui-form-label">账号</label>
                                <div class="layui-input-block">
                                    <input type="text" name="username" value="admin" lay-verify="required" placeholder="请输入" autocomplete="off" class="layui-input">
                                </div>
                            </div>

                            <div class="layui-form-item">
                                <label class="layui-form-label">手机</label>
                                <div class="layui-input-block">
                                    <input type="text" name="phone" value="" lay-verify="required" placeholder="请输入" autocomplete="off" class="layui-input">
                                </div>
                            </div>
                            <div class="layui-form-item">
                                <label class="layui-form-label">邮箱</label>
                                <div class="layui-input-block">
                                    <input type="text" name="email" value="" lay-verify="required" placeholder="请输入" autocomplete="off" class="layui-input">
                                </div>
                            </div>
                            <div class="layui-form-item">
                                <label class="layui-form-label">密码</label>
                                <div class="layui-input-block">
                                    <input type="password" name="password" value="" lay-verify="required" placeholder="请输入" autocomplete="off" class="layui-input">
                                </div>
                            </div>
                            <div class="layui-form-item">
                                <label class="layui-form-label">确认密码</label>
                                <div class="layui-input-block">
                                    <input type="password" name="repassword" value="" lay-verify="required" placeholder="请输入" autocomplete="off" class="layui-input">
                                </div>
                            </div>

                            <div style="margin: 20px 0;text-align:center">
                                <button type="button" class="layui-btn layui-bg-blue" lay-submit lay-filter="install">安装</button>
                            </div>

                            <div class="layui-progress layui-progress-big" lay-filter="progress">
                                <div class="layui-progress-bar layui-bg-blue" id="progress" lay-percent="0%"></div>
                            </div>

                        </form>
                        <hr>
                    </div>
                </div>



            </div>
        </div>
    </div>


    <script>
        layui.use(function() {
            var element = layui.element
            var form = layui.form
            element.render('progress');
            $('#agree').click(function() {
                $('#systemchk').show();
                $('#xieyi').hide();
            });

            $('#toconfig').click(function() {
                $('#installform').show();
                $('#systemchk').hide();
            });

            form.on('submit(install)', function(data) {
                var postdata = data.field;
                $('#progress').html('正在安装...');
                setdatabase(postdata);
            });

            function setdatabase(postdata) {
                $.ajax({
                    url: '/install/Index/index?type=setdatabase', //请求路径
                    type: "POST", //请求方式
                    data: postdata, // 默认写法
                    success: function(data) {
                        if (data.code == 0) {
                            element.progress('progress', '33%');
                            $('#progress').html('正在安装数据库，时间稍长，请耐心等待...');
                            setTimeout(function() {
                                // 这里是延迟后要执行的代码
                                installsql(postdata);
                            }, 6000); // 3000毫秒（3秒）后执行



                        } else {
                            toastr_error(data.message);
                        }
                    },
                    error: function() {

                    },

                });
            }

            function installsql(postdata) {
                $.ajax({
                    url: '/install/Index/index?type=installsql', //请求路径
                    type: "POST", //请求方式
                    data: postdata, // 默认写法
                    success: function(data) {
                        if (data.code == 0) {
                            $('#progress').html('正在创建管理员');
                            element.progress('progress', '66%');
                            createadmin(postdata);
                        } else {
                            toastr_error(data.message);
                        }
                    },
                    error: function() {

                    },

                });
            }

            function createadmin(postdata) {
                $.ajax({
                    url: '/install/Index/index?type=createadmin', //请求路径
                    type: "POST", //请求方式
                    data: postdata, // 默认写法
                    success: function(data) {
                        if (data.code == 0) {
                            $('#progress').html('安装完成，3秒后自动跳转到登录页');
                            element.progress('progress', '100%');
                            setTimeout(function() {
                                window.location.href = '/Admin/Index/index';
                            }, 3000);

                        } else {
                            toastr_error(data.message);
                        }
                    },
                    error: function() {

                    },

                });
            }
        })
    </script>
</body>

</html>